6 de Junio, 2017
Los analistas de datos a menudo escribimos informes presentando los resultados obtenidos tras el análisis estadístico de unos datos. Es conveniente que los resultados presentados sean completamente reproducibles.
R Markdown permite combinar texto, código y los resultados del código en un sólo documento. Al procesar el documento, el código se evalúa y los resultados obtenidos se presentan junto al texto en el informe.
El texto se escribe en lenguaje Markdown, una forma sencilla de escribir texto simple (secciones, párrafos, listas, enlaces, imágenes,…) que se convierte fácilmente a otros formatos (HTML, PDF, Word, …).
Procesador de textos: escribir documentos que contengan fórmulas matemáticas, tablas y figuras.
Presentar, compartir y publicar resultados en varios formatos (pdf, word, html, …).
Generar informes automáticamente.
Herramienta muy útil para la reproducibilidad y para todo usuario de R.
☞ Objetivo: Aprender a elaborar informes reproducibles utilizando R Markdown.
La creación de documentos a partir de R Markdown comienza con un archivo .Rmd que contiene texto y trozos de código R. El archivo .Rmd se envía a knitr, que ejecuta los fragmentos de código R y crea un documento markdown (.md) que incluye el código y su salida. Entonces, Pandoc procesa el archivo .md para crear el informe final en forma de página web, PDF, documento Word, presentación, etc.
El paquete Rmarkdown encapsula todo este proceso en una función llamada render().
Paso 1. Abrimos RStudio.
Paso 2. Instalamos el paquete R Markdown desde CRAN (en caso de no haberlo instalado previamente):
install.packages("rmarkdown")
Paso 3. Seleccionamos File ➾ New File ➾ R Markdown.
Paso 4. Escribimos el título, autor, elegimos el formato de nuestro documento: HTML, PDF, Word, presentación, … y pulsamos OK.
A continuación, se genera automáticamente un documento R Markdown de ejemplo. Para obtener el informe final utilizamos la función render("Ejemplo.Rmd") o pulsamos el botón knit.
Hay 3 componentes generales en un archivo R Markdown:
► Cabecera (YAML) rodeada por ---
► Texto en formato Markdown
► Trozos de código R (code chunks) rodeados por : ```{r} código_R ```
Texto en *cursiva* o _cursiva_ ► Texto en cursiva o cursiva
Texto en **negrita** o __negrita__ ► Texto en negrita o negrita
Subíndice~2~, superíndice^^2^^ ► Subíndice2, superíndice2
~~Tachado~~ ► Tachado
Enlace a [RStudio](http://www.rstudio.com) ► Enlace a RStudio
Imagen: :
Imagen:
' Texto como código ' ► Texto como código
^[Nota a pie de página] ►1
# Encabezado 1
## Encabezado 2
> Cita textual
Cita textual
Tablas:
Cabecera 1 | Cabecera 2 -----------| ------------- Celda 1 | Celda 2 Celda 3 | Celda 4
| Cabecera 1 | Cabecera 2 |
|---|---|
| Celda 1 | Celda 2 |
| Celda 3 | Celda 4 |
Listas desordenadas:
* Elemento 1
* Elemento 2
- Sub-elemento 1
- Sub-elemento 2
Listas ordenadas:
1. Elemento 1
2. Elemento 2
- Sub-elemento 1
- Sub-elemento 2
$f(k)={m \choose k }p^{k}(1-p)^{n-k}$
\(f(k)={m \choose k }p^{k}(1-p)^{n-k}\)
$$f(k)={m \choose k }p^{k}(1-p)^{n-k}$$
\[f(k)={m \choose k }p^{k}(1-p)^{n-k}\] Apuntes LáTeX: Fórmulas matemáticas - Conceptos básicos
$$\Theta = \begin{pmatrix}\alpha & \beta\\
\gamma & \delta
\end{pmatrix}$$
$$\begin{vmatrix}a & b\\
c & d
\end{vmatrix}=ad-bc$$
\[\Theta = \begin{pmatrix}\alpha & \beta\\ \gamma & \delta \end{pmatrix}\]
\[\begin{vmatrix}a & b\\ c & d \end{vmatrix}=ad-bc\]
Existen dos tipos de código R en un documento R Markdown:
`r `.```{r nombre_trozo} y terminan con ```.Se insertan rápidamente pulsando el botón
Podemos añadir etiquetas para nombrar los trozos de código (deben ser únicas) y personalizar la salida del código con distintas opciones que se añaden como argumentos en la cabecera.
Ejemplo:
Asignar un nombre a cada trozo de código nos permite:
Los trozos de código R pueden personalizarse con las opciones de knitr, especificando los argumentos dentro de los corchetes de la cabecera {r }:
| Opción | Valor por defecto | Descripción |
|---|---|---|
| echo | TRUE | Mostrar código en el documento final |
| eval | TRUE | Evaluar trozo de código |
| include | TRUE | Si es FALSE no se incluye el código (pero si se evalúa) ni los resultados en el documento final |
| warning | TRUE | Mostrar advertencias generadas por el código |
| error | TRUE | Mostrar errores generados por el código |
| message | TRUE | Mostrar mensajes generados por el código |
| fig.cap | NULL | Vector de caracteres con leyenda para las figuras |
| Opción | Valor por defecto | Descripción |
|---|---|---|
| fig.height | 7 | Altura de las figuras creadas por el trozo de código |
| fig.width | 7 | Anchura de las figuras creadas por el trozo de código |
| fig.align | 'default' | Alineación de las figuras en el documento ('left', 'right', 'center') |
| fig.path | 'figure/' | Directorio donde se guardarán las figuras creadas |
| cache | FALSE | Almacenamiento en caché de los resultados para reutilizarlos cada vez que se genere el documento (hasta que el código se altere) |
| tidy | FALSE | Visualizar el código de forma ordenada utilizando la función tidy_source() del paquete formatR (deja espacios entre operadores y las líneas largas de código las separa en varias líneas) |
| comment | '##' | Añadir una cadena de caracteres al comienzo de los resultados en el documento final |
| results | 'markup' | 'markup': mostrar los resultados con un cierto formato, 'hide': ocultar los resultados en el documento, 'hold': visualizar todos los resultados al final del trozo de código, 'asis': mostrar los resultados tal cual están en R |
Pueden establecerse opciones globales que se apliquen a todos los trozos de código del documento. Para ello utilizamos la función opts_chunk$set() del paquete knitr.
Ejemplo:
⇢ Nota: Utilizando :: podemos hacer uso de una función concreta, sin tener que cargar todo el contenido de un paquete.
Para mejorar el rendimiento del documento podemos almacenar en caché los fragmentos de código: cache='TRUE'. Éstos se guardarán la primera vez que se ejecute el código y, mientras no se realicen cambios, los objetos se cargarán directamente desde caché en las próximas generaciones del documento.
Advertencia: si un trozo de código no modificado depende de otros que sí, los objetos guardados en caché correspondientes al trozo no modificado no se actualizarán. Para evitar ésto utilizamos el argumento dependson en el que indicamos un vector de caracteres con las etiquetas de los trozos de código de los que depende o un vector numérico con el número correspondiente a los trozos de código (p.ej: dependson=c(1,2)). Este argumento sólo funciona en chunks locales, no en opciones globales.
nombre_documento_cache en el mismo directorio donde se encuentra nuestro documento. Podemos modificar este directorio y el nombre de la carpeta utilizando el argumento cache.path = 'cache/...'.Por defecto, R Markdown muestra los objetos de tipo data.frame y matrix como lo son en la terminal de R.
Ejemplo: El banco de datos mtcars contiene información sobre el consumo de combustible de 32 automóviles y otros aspectos relacionados con su diseño y rendimiento.
mtcars[1:6, 1:7]
# mpg cyl disp hp drat wt qsec # Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 # Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 # Datsun 710 22.8 4 108 93 3.85 2.320 18.61 # Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 # Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 # Valiant 18.1 6 225 105 2.76 3.460 20.22
Existen varios paquetes que permiten mostrar los datos con un formato adicional:
xtable, stargazer, pander, knitr, huxtable, DT, hwriter, htmlTable, …
Debemos indicar el argumento results='asis' en el trozo de código que genera la tabla.
A continuación veremos algunos ejemplos.
Lo más sencillo es utilizar la función kable() de knitr. No tiene muchos argumentos pero en algunos casos es suficiente.
kable(x, format, digits = getOption("digits"), row.names = FALSE, col.names = NA, align,
caption = NULL, ...)
Principales argumentos:
x: un objeto matrix o data frame.format: "latex", "html", "markdown", "pandoc", "rst".digits: número de dígitos para las variables numéricas (puede ser un vector especificando valores para cada columna).row.names: valor lógico indicando si incluir el nombre de las filas.col.names: vector de caracteres indicando el nombre de las columnas.align: alineación de las columnas: 'l' (left), 'c' (center), 'r' (right).caption: título de la tabla.knitr::kable(mtcars[1:6, 1:7], digits = 2, align = 'c', caption = "Banco de datos 'mtcars'.")
| mpg | cyl | disp | hp | drat | wt | qsec | |
|---|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.62 | 16.46 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.88 | 17.02 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.32 | 18.61 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.21 | 19.44 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.44 | 17.02 |
| Valiant | 18.1 | 6 | 225 | 105 | 2.76 | 3.46 | 20.22 |
La función pandoc.table() del paquete pander permite una mayor personalización.
pandoc.table(t, caption, decimal.mark = panderOptions("decimal.mark"), round = panderOptions("round"),
missing = panderOptions("missing"), justify,
style = c("multiline", "grid", "simple", "rmarkdown"), emphasize.strong.cols = c(1), ...)
Principales argumentos:
t: un objeto data frame, matrix o table.caption: título de la tabla.decimal.mark: símbolo decimal (","; ".").round: número de decimales en las variables numéricas.missing: cadena para reemplazar valores perdidosjustify: 'left', 'centre', 'right', alineación de las celdas.style: estilo Pandoc: 'simple', 'mutiline', 'grid' o 'rmarkdown'.emphasize.strong.rows, emphasize.strong.cols: filas y columnas en negrita.emphasize.italics.rows, emphasize.italics.cols: filas y columnas en cursiva.El paquete incluye la función panderOptions() que permite establecer una gran cantidad de opciones.
pander::panderOptions('table.caption.prefix', "Tabla: ")
pander::pandoc.table(mtcars[1:6, 1:7], caption = "Banco de datos 'mtcars'.", justify = 'right',
round = 2, emphasize.strong.cols = c(1, 5), emphasize.italics.rows = c(2, 3))
| mpg | cyl | disp | hp | drat | wt | qsec | |
|---|---|---|---|---|---|---|---|
| Mazda RX4 | 21 | 6 | 160 | 110 | 3.9 | 2.62 | 16.46 |
| Mazda RX4 Wag | 21 | 6 | 160 | 110 | 3.9 | 2.88 | 17.02 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.32 | 18.61 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.21 | 19.44 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.44 | 17.02 |
| Valiant | 18.1 | 6 | 225 | 105 | 2.76 | 3.46 | 20.22 |
Tabla: Banco de datos 'mtcars'.
La función xtable() del paquete xtable permite también un control preciso de las tablas.
⇢ Si le damos una salida lm() produce automáticamente la tabla de coeficientes de regresión.
xtable(x, caption = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...)
Principales argumentos:
x: objeto de R cuya clase aparezca en methods(xtable) (xtable.matrix, xtable.data.frame, xtable.anova, xtable.lm, xtable.glm, xtable.prcomp, …).caption: título de la tabla.align: vector de caracteres indicando la alineación de las columnas.digits: número de dígitos a mostrar en las columnas.display: vector de caracteres indicando el formato de las columnas ("d": enteros, "f": reales, "s": cadenas, …).auto: TRUE/FALSE, aplicar un formato automático cuando no se pase ningún valor a align, digits o display.Utilizando la función print() junto con xtable podemos obtener una mayor personalización.
library(xtable) model <- lm(mpg ~ ., data = mtcars) print(xtable(model, align = "l|ccrr", digits = 2), type = "html")
| Estimate | Std. Error | t value | Pr(>|t|) | |
|---|---|---|---|---|
| (Intercept) | 12.30 | 18.72 | 0.66 | 0.52 |
| cyl | -0.11 | 1.05 | -0.11 | 0.92 |
| disp | 0.01 | 0.02 | 0.75 | 0.46 |
| hp | -0.02 | 0.02 | -0.99 | 0.33 |
| drat | 0.79 | 1.64 | 0.48 | 0.64 |
| wt | -3.72 | 1.89 | -1.96 | 0.06 |
| qsec | 0.82 | 0.73 | 1.12 | 0.27 |
| vs | 0.32 | 2.10 | 0.15 | 0.88 |
| am | 2.52 | 2.06 | 1.23 | 0.23 |
| gear | 0.66 | 1.49 | 0.44 | 0.67 |
| carb | -0.20 | 0.83 | -0.24 | 0.81 |
La función htmlTable() del paquete htmlTable permite construir tablas avanzadas en HTML.
htmlTable(x, header, rnames, rowlabel, caption, tfoot, align = paste(rep("c", ncol(x)),
css.table = "margin-top: 1em; margin-bottom: 1em;", pos.caption, col.columns, ...)
Principales argumentos:
x: matrix o data frame con los datos.header: vector de caracteres especificando el nombre de las columnas.rnames: nombre de las filas.rowlabel: cabecera de la columna que contiene el nombre de las filas.caption: título de la tabla.tfoot: Añadir pie de tabla.align: alineación de las columnas ('l', 'c', 'r').css.table: especificar estilo de la tabla ("margin-top: 1em; margin-bottom: 1em;").pos.caption: posición del título ("bottom","top").col.columns: color de fondo de las columnas.htmlTable::htmlTable(round(mtcars[1:6, 1:8],2), col.columns = c(rep("#E6E6F0", 1),
rep("#F0FD99", 7)), css.cell = "padding: 0.5em")
| mpg | cyl | disp | hp | drat | wt | qsec | vs | |
|---|---|---|---|---|---|---|---|---|
| Mazda RX4 | 21 | 6 | 160 | 110 | 3.9 | 2.62 | 16.46 | 0 |
| Mazda RX4 Wag | 21 | 6 | 160 | 110 | 3.9 | 2.88 | 17.02 | 0 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.32 | 18.61 | 1 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.21 | 19.44 | 1 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.44 | 17.02 | 0 |
| Valiant | 18.1 | 6 | 225 | 105 | 2.76 | 3.46 | 20.22 | 1 |
► Comparación de las funciones de creación de tablas anteriores:
| Función | Lo mejor | Formatos de salida compatibles |
|---|---|---|
| kable() | Sencillez y facilidad de uso | Compatibilidad con todos los formatos (HTML, PDF, Word, …) |
| pandoc.table() | Personalización avanzada | Compatibilidad con todos los formatos (HTML, PDF, Word, …) |
| xtable() | Permite como argumento objetos de tipo lm, glm, anova, …, buena personalización de tablas | Compatible sólo con PDF y HTML |
| htmlTable() | Personalización avanzada de tablas, especificación de estilos mediante CSS | Compatible sólo con HTML |
La figuras producidas por los trozos de código se insertarán automáticamente en el documento final.
Ejemplo:
set.seed(1)
n <- 100
x <- rnorm(n)
par(mfrow = c(1, 2))
for (i in 1:2) {
y <- i*x + rnorm(n)
plot(x, y , main=i)
}
| Argumento | Descripción |
|---|---|
| fig.path | Directorio donde se guardarán las figuras creadas (p.ej: 'figures/'). |
| fig.show | Opciones para mostrar las figuras ('asis': en el lugar exacto donde se generan, 'hold': todas las figuras al final del trozo, 'animate': envolver los gráficos en una animación, 'hide': generar gráficos pero ocultarlos en el documento) |
| dev | Nombre de la función que se utilizará como dispositivo gráfico para crear las figuras ('bmp', 'pdf', 'png', 'svg', 'jpeg', 'tiff', 'tikz', …) |
| dev.args | Otros argumentos que se pasarán al disposivo gráfico (p.ej: dev.args=list(bg='yellow', pointsize=10)). |
| fig.ext | Extensión del fichero en la figura de salida. |
| fig.width, fig.height | Ancho y alto del gráfico en el dispositivo gráfico (7 por defecto). |
| out.width, out.height | Ancho y alto del gráfico en el fichero de salida final (p.ej: '10cm'). |
| fig.align | Alineación de las figuras en el documento ('left', 'right', 'center'). |
| fig.cap | Vector de caracteres con leyenda para las figuras. |
Hay muchos formatos de salida disponibles para usar con R Markdown.
El formato de salida se especifica en el campo output de la cabecera (YAML) del documento. Cada formato permite distintos argumentos con opciones para modificar el estilo y estructura del documento final.
Para crear un documento html especificamos output: html_document en la cabecera (YAML).
Personalizamos el documento de salida, añadiendo los argumentos necesarios como sub-campo del argumento output de la siguiente forma:
---
title: "Ejemplo HTML"
output:
html_document:
toc: true
fig_width: 7
fig_height: 6
---
⇢ Los opciones de cada campo deben aparecer tabuladas.
| Argumento | Descripción |
|---|---|
| toc: true | Añadir tabla de contenidos al inicio del documento |
| toc_depth: 2 | Nivel de encabezado máximo que debe aparecer en la tabla de contenidos |
| toc_float: true | Aparezca la tabla de contenidos a la izquierda del documento final |
| number_sections: true | Incluir numeración en los encabezados |
| theme: default | Utilizar temas predefinidos ("default", "cerulean", "journal", "flatly", …). |
| highlight: default | Estilo de resaltado de la sintaxis ("default", "tango", "pygments", "kate", …) |
| fig_width, fig_height | Establecer anchura y altura de las figuras |
| fig_caption: true | Representar figuras con subtítulos |
| df_print: kable | Visualización de tablas ("default", "kable", "tibble") |
| keep_md: true | Guardar documento .md del proceso |
Podemos añadir un estilo propio al documento HTML mediante CSS especificando en la cabecera el archivo de estilos de la siguiente forma:
---
title: "Ejemplo HTML"
output:
html_document:
css: styles.css
---
Ejemplo de archivo CSS
Para definir el estilo de secciones específicas incluimos un identificador en el encabezado de la sección:
## Sección 3 {.resaltar}
Podemos añadir contenido HTML adicional en el documento de la siguiente forma:
---
title: "Ejemplo HTML"
output:
html_document:
includes:
in_header: header.html
before_body: doc_prefix.html
after_body: doc_suffix.html
---
► header.html ⇢ Añadir información que no forma parte del contenido de la web: título, vínculos a hojas de estilo CSS, información para los robots de búsqueda, …
► doc_prefix.html ⇢ Insertar una cabecera antes del contenido de la web, logos, …
► doc_suffix.html ⇢ Añadir información al final de la página (dirección de contacto, estilo CSS utilizado, copyright, …)
Para crear un documento PDF especificamos output: pdf_document en la cabecera (YAML). Se requiere LaTeX en el equipo (se recomienda instalación completa).
Personalizamos el documento de salida, añadiendo los argumentos necesarios como sub-campo del argumento output de la siguiente forma:
---
title: "Ejemplo PDF"
output:
pdf_document:
toc: true
number_sections: true
keep_tex: true
---
| Argumento | Descripción |
|---|---|
| toc: true | Añadir tabla de contenidos al inicio del documento |
| toc_depth: 2 | Nivel de encabezado mínimo que debe aparecer en la tabla de contenidos |
| number_sections: true | Incluir numeración en los encabezados |
| fig_width: 7 | Establecer anchura predeterminada de las figuras |
| fig_height: 6 | Establecer altura predeterminada de las figuras |
| fig_caption: true | Representar figuras con subtítulos |
| df_print: kable | Visualización de tablas ("default", "kable", "tibble") |
| highlight: default | Estilo de resaltado de la sintaxis ("default", "tango", "pygments", "kate", …) |
| keep_tex: true | Guardar documento .tex del proceso |
| template: plantilla.tex | Plantilla Pandoc que se usará al generar el documento (pandoc-templates) |
Podemos añadir contenido LaTeX adicional en el documento de la siguiente forma:
---
title: "Ejemplo PDF"
output:
pdf_document:
includes:
in_header: header.tex
before_body: doc_prefix.tex
after_body: doc_suffix.tex
---
► header.tex ⇢ Cargar paquetes de LaTeX, …
► doc_prefix.tex ⇢ Insertar una cabecera al documento, logos, …
► doc_suffix.tex ⇢ Información al final del documento (dirección de contacto, bibliografía, anexos…)
| Argumento | Descripción |
|---|---|
| lang | Lenguaje del documento |
| fontsize | Tamaño de fuente (P.ej: 11pt) |
| documentclass | Tipo de documento (P.ej: article) |
| classoption | Opciones del tipo de documento (P.ej: oneside) |
| geometry | Márgenes (P.ej: margin=1in) |
| mainfont, sansfont, monofont, mathfont | Tipos de letra (únicamente funciona con xelatex y lualatex) |
| linkcolor, urlcolor, citecolor | Color para links internos, externos y citas (red, green, magenta, cyan, blue, black) |
Estas opciones no aparecen como sub-campo de la sección output sino que aparecen en el nivel superior junto a title, author,…
Para crear un documento word especificamos output: word_document en la cabecera (YAML).
Personalizamos el documento de salida, añadiendo los argumentos necesarios como sub-campo del argumento output de la siguiente forma:
---
title: "Ejemplo Word"
output:
word_document:
highlight: tango
df_print: kable
fig_caption: true
---
| Argumento | Descripción |
|---|---|
| fig_width: 7 | Anchura predeterminada de las figuras |
| fig_height: 6 | Altura predeterminada de las figuras |
| fig_caption: true | Representar figuras con subtítulos |
| df_print: kable | Visualización de tablas ("default", "kable", "tibble") |
| highlight: default | Estilo de resaltado de la sintaxis ("default", "tango", "pygments", "kate", …) |
| keep_md: true | Guardar documento .md del proceso |
| reference_docx: mystyles.docx | Especificar estilo según un documento word de referencia |
R Markdown permite cuatro formatos de presentación:
Para crear nuevas diapositivas utilizamos las etiquetas de encabezado # y ##.
Para crear diapositivas sin cabecera utilizamos ----.
| Argumento | Descripción |
|---|---|
| incremental: true | Mostrar ítem de listas de forma incremental |
| highlight: default | Estilo de resaltado de la sintaxis ("default", "tango", "pygments", "kate", …) |
| font_adjustment: -1 | Aumentar o disminuir el tamaño por defecto del texto |
| css: styles.css | Añadir un estilo propio mediante CSS |
| logo: logo.png | Ruta a un archivo con un logotipo para añadirlo a la portada de la presentación |
| footer: "Copyright (c) 2014, RStudio" | Añadir texto a pie de página |
| fig_width: 7, fig_height: 6 | Anchura y altura predeterminada de las figuras |
| fig_caption: true | Representar figuras con subtítulos |
| df_print: kable | Visualización de tablas ("default", "kable", "tibble") |
| keep_md: true | Guardar documento .md del proceso |
El paquete rticles proporciona un conjunto de plantillas de R Markdown-LaTeX para varios formatos:
Estas plantillas aseguran que los documentos se ajustan exactamente a los estándares de envío.
1. Instalar la última versión de RStudio.
2. Instalar el paquete rticles: install.packages("rticles", type = "source")
3. Usar el diálogo de R Markdown para crear un artículo desde uno de los templates:
Los documentos R Markdown parametrizados son aquellos en los que se incluyen algunos parámetros y los resultados presentados en el informe van a depender del valor que asignemos a dichos parámetros. Estos informes son útiles cuando queremos presentar el mismo análisis pero con distintos valores (p.ej: generar un informe para distintos departamentos o regiones geográficas).
Los parámetros se declaran en el campo params de la cabecera del documento R Markdown. Ejemplo:
--- title: Probando informes con parámetros output: html_document params: ciudad: "Valencia, España" ---
En el código, accederemos a los valores de los parámetros escribiendo: params$ciudad.
Para volver a generar el documento cambiando los valores de los parámetros utilizamos el argumento params de la función render():
rmarkdown::render("Informe_ciudades.Rmd", params = list(ciudad = 'Alicante, España'))
rmarkdown::render("Informe_ciudades.Rmd", params = list(ciudad = 'Alicante, España'))
Podemos añadir fácilmente la bibliografía de nuestro documento especificando un archivo de bibliografía en el campo bibliography de la cabecera:
--- title: "Sample Document" output: html_document bibliography: bibliography.bib ---
Pandoc genera automáticamente la bibliografía y se coloca al final del documento.
| Formato | Extensión del fichero |
|---|---|
| MODS | .mods |
| BibLaTeX | .bib |
| BibTeX | .bibtex |
| RIS | .ris |
| EndNote | .enl |
| EndNote XML | .xml |
| ISI | .wos |
| MEDLINE | .medline |
| Copac | .copac |
| JSON citeproc | .json |
Las citas deben insertarse en el documento mediante una clave, formada por '@' + el identificador de la cita en la base de datos. Ejemplos:
► Citas entre paréntesis:
[@Gandrud2015; @Xie2015] ⇢ (Gandrud 2015; Xie 2015)
► Citas sin paréntesis para los autores:
@Gandrud2015 ⇢ Gandrud (2015)
► Citas sin mencionar al autor:
[-@Gandrud2015] ⇢ (2015)
Para incluir artículos en la bibliografía que no son citados en el texto, añadimos en la cabecera del documento:
--- title: "Sample Document" output: html_document bibliography: bibliography.bib nocite: | @Broman2016, @Peng2015, @Xie2016 ---
Por defecto, Pandoc utiliza el formato autor-fecha para citas y referencias. Para utilizar otro estilo, hay que especificar un archivo CSL en el camplo csl de la cabedera. Ejemplo:
--- title: "Sample Document" output: html_document bibliography: bibliography.bib csl: biomed-central.csl ---
Texto, código y resultados en un mismo documento lo que nos ayuda a conseguir que nuestros informes sean reproducibles (sabiendo exactamente cómo hemos obtenido los resultados).
Forma muy sencilla de dar formato al texto de nuestro informe mediante el lenguaje markdown.
Generación de tablas y figuras automáticamente en el documento, evitándo tener que escribir e insertar manualmente los resultados.
Almacenamiento automático de las figuras creadas por los trozos de código en el directorio que elijamos.
Gran variedad de formatos de presentación de informes: HTML, Word, PDF, Presentaciones, Artículos, … sin tener que preocuparnos de maquetar manualmente el documento.
Generación automática del mismo informe para distintos datos (informes parametrizados).
Incorporación automática de bibliografías y sencillez en la citación de documentos.
Broman, Karl. 2016. “Writing Reproducible Reports: Knitr with R Markdown.” http://kbroman.org/Tools4RR/.
Gandrud, Christopher. 2015. Reproducible Research with R and Rstudio, Second Edition. Chapman; Hall/CRC.
Peng, Roger D. 2015. “Markdown and R.”
Xie, Yihui. 2015. Dynamic Documents with R and Knitr, Second Edition. Chapman; Hall/CRC.
———. 2016. Bookdown: Authoring Books and Technical Documents with R Markdown. Chapman; Hall/CRC. https://bookdown.org/yihui/bookdown/.